package demo7;

public class Main {
    public static void main(String[] args) {
        Box<Number> box1 = new Box<>();
        box1.setFirst(100);
        showBox(box1);

//        1、解释错误一：Integer继承了Number类
//          但是不能用继承，多态的思想，以子类作为参数这样理解。只能严格按照传泛型方法相对应的数据类型(这里参数是个泛型类)
        Box<Integer> box2 = new Box<>();
        box2.setFirst(300);
        Integer first = box2.getFirst();
        System.out.println(first);

        //showBox(box2);  //报错，Integer继承自Number，但不能用多态的思想理解，所以就引入了上限通配符
    }

    public static void showBox(Box<Number> box) {
        Number first = box.getFirst();
        System.out.println(first);

    }

//    2、解释错误二：不能用方法重载的思想
//      因为两个方法传入的参数虽然不同，但会发生类型擦除
//      其实会是同一个泛型类，所以无法重载
//    public static void showBox(Box<Integer> box) {
//        Integer first = box.getFirst();
//        System.out.println(first);
//    }
}
